home *** CD-ROM | disk | FTP | other *** search
- /* filecopy.c: Low-level file copy */
-
- #include <io.h>
- #include <sys/types.h>
- #include <sys/stat.h>
- #include <fcntl.h>
-
- #define BUFSIZ 512
- #define INPUT_MODE (O_RDONLY | O_BINARY)
- #define OUTPUT_MODE (O_WRONLY | O_BINARY | O_CREAT)
-
- int filecopy(char *from, char *to)
- {
- int nbytes;
- int status = -1;
- int fd1 = open(from,INPUT_MODE);
- int fd2 = open(to,OUTPUT_MODE,S_IWRITE);
- static char buffer[BUFSIZ];
-
- if (fd1 >= 0 && fd2 >= 0)
- {
- status = 0;
- while ((nbytes = read(fd1,buffer,BUFSIZ)) > 0)
- if (write(fd2,buffer,nbytes) != nbytes)
- {
- /* Write error */
- status = -1;
- break; /* Write error */
- }
-
- /* Was there a read error? */
- if (nbytes == -1)
- status = -1;
- }
-
- if (fd1 >= 0)
- close(fd1);
- if (fd2 >= 0)
- close(fd2);
- return status;
- }
-
-
-